// pages/express/index.js
const app = getApp();
const db = wx.cloud.database();
import { needLogin, uploadFiles, goBack,tactful } from "../../Utils/Utils";

Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		CustomBar: app.globalData.CustomBar, // 头部整体高度
		StatusBar: app.globalData.StatusBar, // 状态栏高度
		windowHeight: app.globalData.windowHeight, // 屏幕整体高度
		scrollHeight: 0, // scroll高度
		count:0,									// 字数
		
		_openid: "", // 用户的openid
		isConceal: false, // 用户是否匿名发布, 默认false
		textAreaValue: "", // 用来保存用户提交的表单域里的内容

		//当前的图片列表, uploader案例中保存上传图片的
		files: [],
		// 允许上传的文件扩展名
		ext: ["bmp","jpg","png","gif","webp","jpeg"],
	},

	optionBombBox2Show: function(param){
		let that = this
		let temp = that.data.BombBox2Show
		let temp2 = that.data.BombBoxShow
		if(temp||temp2){
			return
		}
		that.setData({
			BombBox2Show:true,
			BombBox2text:param
		})
		setTimeout(()=>{
			that.setData({
				BombBox2Show:false,
			})
		},3000)
	},
	
	openBombBox: function(param){
		let that = this
		that.setData({								
			BombBoxShow:true,
			BombBoxText:param
		})
	},

	closeBombBox: function(){
		let that = this
		that.setData({
			BombBoxShow:false,
		})
	},

	/**
	 * 发布动态
	 * @param {} e 
	 */
	bindpublish(e){
		let that = this;
		if(!that.checkUpload()){
			return false;
		}
		// 需要登陆
		
		let tempText = tactful(this.data.textAreaValue)		// 校验字符串
		needLogin(getCurrentPages().__route__, ()=>{
			// 先将文件上传到文件中
			that.openBombBox("上传中...")
			uploadFiles(this.data.files, "express", (res)=>{
				// res 为上传的图片的路径信息
				// 上传我要表白的内容
				db.collection("publishInfo").add({
					data: {
						// type 1 我要表白 2 闲置出让 3 失物招领
						type: 1,
						text: tempText,
						isConceal: this.data.isConceal,
						pictures: res,
						time: new Date(),
						timestamp: new Date().getTime(),
					}
				}).then(res=>{
					that.closeBombBox()
					that.optionBombBox2Show("上传成功！")
					setTimeout(()=>{
						that.goBack()
					}, 500)
				}).catch(err => {
					that.closeBombBox()
					that.optionBombBox2Show("上传失败！")
				})
			})
		})
		
	},
	
	goBack: function(){
		goBack()
	},

	changeConceal: function() { // 改变用户匿名状态
		let that = this
		that.setData({
			isConceal: !that.data.isConceal
		})
	},

	editText: function(e) {							// 获取表单域内容
		let maxlength = this.data.maxlength
		let temp = 0
		temp = e.detail.value.length>maxlength?maxlength:e.detail.value.length
		let that = this
		that.setData({
			textAreaValue:e.detail.value,
			count:temp
		})
	},


	previewImage: function(e) {
		wx.previewImage({
			current: e.currentTarget.id, // 当前显示图片的http链接
			urls: this.data.files // 需要预览的图片http链接列表
		})
	},
		/**
	 * 发布检测
	 */
	checkUpload(){
		if(this.data.textAreaValue.trim().replace("\n", "") == ""){
			this.optionBombBox2Show("内容不能为空")
			return false;
		}
		if(this.data.textAreaValue.length>500){
			this.optionBombBox2Show("不能超出500字")
			return false;
		}
		return true;
	},
	uplaodFile(files) {
		const that = this;
		// 文件上传的函数，返回一个promise
		return new Promise((resolve, reject) => {
			const tempFilePaths = files.tempFilePaths;
			that.setData({
				files: tempFilePaths
			})
      var object = {};
      object['urls'] = tempFilePaths;
      resolve(object);
		})
	},

	/**
	 * 取消某个图片的上传
	 * @param {} detail 取消指定索引的图片上传
	 */
	binddelete(detail){
		let datafiles = this.data.files;
		datafiles.splice(detail.detail.index, 1)
		this.setData({
			files: datafiles
		})
	},

	selectFile(files) { // 选择图片时的过滤函数，返回true表示图片有效
		for(f of files.tempFilePaths){
			let fileExt = f.split(".")[1].toString().toLowerCase();
			if(this.data.ext.indexOf(fileExt) < 0){
				this.optionBombBox2Show("格式不支持")
				return false
			}
		}
		// 返回false可以阻止某次文件上传
	},


	uploadError(e) { // 1表示图片超过大小限制，type为2表示选择图片失败，type为3表示图片上传失败。
		console.log('upload error', e.detail)
	},

	uploadSuccess(e) { // detail为{urls}，urls为upload函数上传成功返回的urls参数
		console.log('upload success', e.detail)
	},

	// 从这里结束 

	
	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad: function(options) {
		this.setData({ // 这个是ui库里mp-uploader案例中的方法
			selectFile: this.selectFile.bind(this),
			uplaodFile: this.uplaodFile.bind(this)
		})

		let that = this
		that.setData({
			scrollHeight: that.data.windowHeight - that.data.CustomBar,
		})
	},

	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady: function() {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow: function() {
		
	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide: function() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload: function() {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh: function() {

	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom: function() {

	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage: function() {

	}
})
